<?php

namespace Unl\HomologacionBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Unl\HomologacionBundle\Entity\Area;
use Symfony\Component\Validator\ExecutionContext;

/**
* @ORM\Entity(repositoryClass="Unl\HomologacionBundle\Repository\CarreraRepository")
* @Assert\Callback(methods={"esCodigoNombreValido"})
*/
class Carrera
{
    /**
    * @ORM\Id
    * @ORM\Column(type="bigint")
    * @ORM\GeneratedValue(strategy="AUTO")
    */
    protected $id;

    /**
    * @ORM\Column(type="integer")
    * @Assert\NotBlank(message = "El campo codigo no puede estar en blanco.")
    * @Assert\Type(type="integer", message="El valor {{ value }} no es un {{ type }} válido.")
    */
    protected $codigo;

    /**
    * @ORM\Column(type="string", length=100)
    * @Assert\NotBlank(message = "El campo nombre no puede estar en blanco.")
    */
    protected $nombre;


    /**
    * @ORM\ManyToOne(targetEntity="Universidad", inversedBy="carreras"),
    * @ORM\JoinColumn(name="universidad_id", referencedColumnName="id")
    */
    protected $universidad;

     /**
    * @ORM\ManyToOne(targetEntity="Area", inversedBy="carreras")
    * @ORM\JoinColumn(name="area_id", referencedColumnName="id", nullable="true")
    * @Assert\Type(type ="Unl\HomologacionBundle\Entity\Area")
    **/
    protected $area;


    /**
     * Get id
     *
     * @return bigint 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set codigo
     *
     * @param integer $codigo
     */
    public function setCodigo($codigo)
    {
        $this->codigo = $codigo;
    }

    /**
     * Get codigo
     *
     * @return integer 
     */
    public function getCodigo()
    {
        return $this->codigo;
    }

    /**
     * Set nombre
     *
     * @param string $nombre
     */
    public function setNombre($nombre)
    {
        $this->nombre = $nombre;
    }

    /**
     * Get nombre
     *
     * @return string 
     */
    public function getNombre()
    {
        return $this->nombre;
    }

    /**
     * Set universidad
     *
     * @param Unl\HomologacionBundle\Entity\Universidad $universidad
     */
    public function setUniversidad($universidad)
    {
        $this->universidad = $universidad;
    }

    /**
     * Get universidad
     *
     * @return Unl\HomologacionBundle\Entity\Universidad 
     */
    public function getUniversidad()
    {
        return $this->universidad;
    }


    public function __toString()
    {
        return $this->id.' '.$this->nombre;
    }


    /**
     * Set area
     *
     * @param Unl\HomologacionBundle\Entity\Area $area
     */
    public function setArea($area)
    {
     $this->area = $area;
    }

    /**
     * Get area
     *
     * @return Unl\HomologacionBundle\Entity\Area 
     */
    public function getArea()
    {
        return $this->area;
    }
    
        public function esCodigoNombreValido(ExecutionContext $context){
         if (empty($this->codigo) && empty($this->nombre) ) {
           $context->addViolation('Los campos Codigo y Nombre de la tabla de Carreras no pueden ser blanco', array(), null);
           return false ;
        }
        return true;
    }
}